package io;

import java.io.*;

/**
 * 对象流：
 * 对象流是一对高级流
 * 用于进行对象的序列化和反序列化
 *
 * 对象序列化：把一个对象转换为一组可以用于保存或网络传输的字节的过程
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        //将一个Person对象序列化后写入文件person.obj中
        String name ="王克晶";
        int age=18;
        char gender='女';
        String[] otherInfo = {"嗓门大","教得好"};
        Person p = new Person(name,age,gender,otherInfo);

        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        /*
            对象流提供的重要方法:
            void writeObject(Object obj)
            将给定的对象序列化为一组字节，再将其通过链接的流写出

            该方法要求序列化的对象所属的类必须实现可序列化接口，否则会抛出异常:
            java.io.NotSerializableException

            序列化接口:java.io.Serializable

            所以在Person类里要继承这个接口，否则要报错
         */
        oos.writeObject(p);
        System.out.println("写出完毕");
        oos.close();
    }
}
